package com.moli.iov.alarm.model.po;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.moli.iov.alarm.model.po.extend.AlarmMileageExceptionExtend;
import com.moli.iov.alarm.model.po.extend.FenceInfoExtend;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;

/**
 *
 */
@Data
public class AlarmInfo implements Serializable {

    public AlarmInfo(){
//        this.handleStatus = 0;
        this.isHandle = false;
    }

    private static final long serialVersionUID = 7500298910428217575L;

    /**
     * 唯一 报警编码
     */
    private String alarmId;

    /**
     * 车架号
     */
    private String vin;

    /**
     * 车牌号
     */
    private String license;

    /**
     * 企业id
     */
    private Long companyId;

    /**
     * 企业名称
     */
    private String companyName;

    /**
     * 报警编码
     */
    private Integer alarmCode;

    /**
     * 报警名称
     */
    private String alarmName;

    /**
     * 报警状态 1、正在报警 2、报警结束 3、忽略
     */
    private Integer status;
    /**
     *  处理状态 0 未处理 1、已处理
     */
//    private Integer  handleStatus;
    /**
     * 类型： 1、报警  2、故障
     */
    private Integer alarmType;

    /**
     * 故障级别 1、一级报警  2、二级报警  3、三级报警
     */
    private Integer alarmLevel;

    /**
     * 报警来源： 1、T-Box上报 2、平台判断
     */
    private Integer alarmSource;

    /**
     * 开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date beginTime;

    /**
     * 结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date endTime;

    /**
     * 终端采集时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date collectDate;

    /**
     * 最后上报时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date lastReportDate;

    /**
     * 持续时间
     */
    private Long duration;

    /**
     * 持续时间 格式化
     */
    private String durationStr;

    /**
     * 备注
     */
    private String memo;

    /**
     * 解除告警用户id
     */
    private Long relieveUserId;

    /**
     * 解除告警用户名称
     */
    private String relieveUserName;

    /**
     * 车辆信息
     */
    private AlarmVehicleInfo alarmVehicleInfo;

    /**
     * 里程信息
     */
    private AlarmMileageInfo alarmMileageInfo;

    /**
     * 经纬度信息
     */
    private AlarmLocation location;

    /**
     * 解除报警时经纬度信息
     */
    private AlarmLocation disarmLocation;

    /**
     * 里程异变信息
     */
    private AlarmMileageExceptionExtend mileageExceptionChange;

    /**
     * 围栏信息
     */
    private FenceInfoExtend fenceInfo;

    /**
     * 里程异变审核 状态 0、未处理 1、有效变异 2、无效异变
     */
    private Integer meAuditStatus;

    /**
     * 里程异变审 原因说明
     */
    private String meAuditMemo;

    /**
     * 里程异变审核 时间
     */
    private Date meAuditTime;

    /**
     * 忽略原因
     */
    private String ignoreMemo;

    /**
     * 忽略操作用户id
     */
    private Long ignoreUserId;

    /**
     * 忽略操作用户名称
     */
    private String ignoreUserName;
    /**
     * 实际行驶里程
     */
    private Double actualMileage;

    /**
     * GPS累计里程
     */
    private Double gpsMileage;
    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;
    /**
     * 是否已处理
     */
    private Boolean isHandle;
}
